1462. Хитрая сортировка
Дана
последовательность чисел. Вам следует упорядочить их по неубыванию последней
цифры, а при равенстве последних цифр – по неубыванию самих чисел.
Вход. Первая строка содержит число n (1 ≤ n ≤
100), а вторая – сами натуральные числа, не превышающие 32000.
Выход. Выведите последовательность чисел, упорядоченную согласно
условию.
Пример
входа |
Пример
выхода |
7 12 15 43 13
20 1 15 |
20 1 12 13
43 15 15 |
РЕШЕНИЕ
сортировка
Реализуйте
компаратор для сортировки чисел.
Пример
Массив чисел
отсортирован по возрастанию последней цифры. Числа, имеющие одинаковую
последнюю цифру, отсортированы по возрастанию.
Объявим рабочий массив.
int m[100];
Функция сортировки. Упорядочиваем числа по неубыванию
последней цифры. Если последние цифры равны, то упорядочиваем по неубыванию
самих чисел.
int f(int a, int b)
{
if (a % 10 == b % 10) return
a < b;
return a % 10 < b % 10;
}
Читаем входные данные.
scanf("%d",&n);
for(i = 0; i < n; i++)
scanf("%d",&m[i]);
Сортируем массив чисел.
sort(m,m+n,f);
Выводим результирующий массив.
for(i = 0; i < n - 1; i++)
printf("%d ",m[i]);
printf("%d\n",m[n-1]);
import java.util.*;
public class Main
{
public static class MyFun implements Comparator<Integer>
{
public int
compare(Integer a, Integer b)
{
if (a % 10 == b % 10) return a - b;
else return a % 10 - b % 10;
}
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
Integer m[] = new Integer[n];
for(int i = 0; i < n; i++) m[i] = con.nextInt();
Arrays.sort(m, new MyFun());
for(int i = 0; i < n; i++) System.out.print(m[i] + " ");
System.out.println();
con.close();
}
}
import sys
from functools import cmp_to_key
def compare(a, b):
if a % 10 == b % 10: return a - b;
return a % 10 - b % 10;
n = int(input())
lst = []
for line in sys.stdin:
for var in line.split():
lst.append(int(var))
res = sorted(lst, key = cmp_to_key(compare))
print(*res)